home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.2 Development Libraries / SGI IRIX 6.2 Development Libraries.iso / dist / complib.idb / usr / share / catman / p_man / cat3 / complib / CSVDC.z / CSVDC
Text File  |  1996-03-14  |  4KB  |  133 lines

  1.  
  2.  
  3.  
  4. CCCCSSSSVVVVDDDDCCCC((((3333FFFF))))                                                            CCCCSSSSVVVVDDDDCCCC((((3333FFFF))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      CSVDC   - CSVDC is a subroutine to reduce a complex NxP matrix X by
  10.      unitary transformations U and V to diagonal form.  The diagonal elements
  11.      S(I) are the singular values of X.  The columns of U are the
  12.      corresponding left singular vectors, and the columns of V the right
  13.      singular vectors.
  14.  
  15.  
  16. SSSSYYYYNNNNOOOOPPPPSSSSYYYYSSSS
  17.       SUBROUTINE CSVDC(X,LDX,N,P,S,E,U,LDU,V,LDV,WORK,JOB,INFO)
  18.  
  19. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  20.      On Entry
  21.  
  22.      XXXX COMPLEX(LDX,P), where LDX .GE. N.
  23.         X contains the matrix whose singular value
  24.         decomposition is to be computed.  X is
  25.         destroyed by CSVDC.
  26.  
  27.      LLLLDDDDXXXX INTEGER.
  28.         LDX is the leading dimension of the array X.
  29.  
  30.      NNNN INTEGER.
  31.         N is the number of columns of the matrix X.
  32.  
  33.      PPPP INTEGER.
  34.         P is the number of rows of the matrix X.
  35.  
  36.      LLLLDDDDUUUU INTEGER.
  37.         LDU is the leading dimension of the array U
  38.         (see below).
  39.  
  40.      LLLLDDDDVVVV INTEGER.
  41.         LDV is the leading dimension of the array V
  42.         (see below).
  43.  
  44.      WWWWOOOORRRRKKKK COMPLEX(N).
  45.         WORK is a scratch array.
  46.  
  47.      JJJJOOOOBBBB INTEGER.
  48.         JOB controls the computation of the singular
  49.         vectors.  It has the decimal expansion AB
  50.         with the following meaning
  51.         A .EQ. 0    Do not compute the left singular
  52.         vectors.
  53.         A .EQ. 1    Return the N left singular vectors
  54.         in U.
  55.         A .GE. 2    Return the first MIN(N,P)
  56.         left singular vectors in U.
  57.         B .EQ. 0    Do not compute the right singular
  58.         vectors.
  59.         B .EQ. 1    Return the right singular vectors
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. CCCCSSSSVVVVDDDDCCCC((((3333FFFF))))                                                            CCCCSSSSVVVVDDDDCCCC((((3333FFFF))))
  71.  
  72.  
  73.  
  74.         in V.  On Return
  75.  
  76.      SSSS COMPLEX(MM), where MM = MIN(N+1,P).
  77.         The first MIN(N,P) entries of S contain the
  78.         singular values of X arranged in descending
  79.         order of magnitude.
  80.  
  81.      EEEE COMPLEX(P).
  82.         E ordinarily contains zeros.  However see the
  83.         discussion of INFO for exceptions.
  84.  
  85.      UUUU COMPLEX(LDU,K), where LDU .GE. N.  If JOBA .EQ. 1
  86.         then K .EQ. N.  If JOBA .GE. 2 then
  87.         K .EQ. MIN(N,P).
  88.         U contains the matrix of right singular vectors.
  89.         U is not referenced if JOBA .EQ. 0.  If N .LE. P
  90.         or if JOBA .GT. 2, then U may be identified with X
  91.         in the subroutine call.
  92.  
  93.      VVVV COMPLEX(LDV,P), where LDV .GE. P.
  94.         V contains the matrix of right singular vectors.
  95.         V is not referenced if JOB .EQ. 0.  If P .LE. N,
  96.         then V may be identified with X in the
  97.         subroutine call.
  98.  
  99.      IIIINNNNFFFFOOOO INTEGER.
  100.         The singular values (and their corresponding
  101.         singular vectors) S(INFO+1),S(INFO+2),...,S(M)
  102.         are correct (here M=MIN(N,P)).  Thus if
  103.         INFO.EQ. 0, all the singular values and their
  104.         vectors are correct.  In any event, the matrix
  105.         B = CTRANS(U)*X*V is the bidiagonal matrix
  106.         with the elements of S on its diagonal and the
  107.         elements of E on its super-diagonal (CTRANS(U)
  108.         is the conjugate-transpose of U).  Thus the
  109.         singular values of X and B are the same.  LINPACK.  This version dated
  110.      03/19/79 .  Stewart, G. W., University of Maryland, Argonne National Lab.
  111.  
  112.      CCCCSSSSVVVVDDDDCCCC uses the following functions and subprograms. External CSROT BLAS
  113.      CAXPY,CDOTC,CSCAL,CSWAP,SCNRM2,SROTG Fortran ABS,AIMAG,AMAX1,CABS,CMPLX
  114.      Fortran CONJG,MAX0,MIN0,MOD,REAL,SQRT
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.